In many systems, such as computer systems or communication networks, a single set of data is required to be provided (or transmitted) multiple times. In a packet switched network, for example, employing a network switch that forwards the same frame to many ports, a single frame may be received at the switch and be designated for forwarding to multiple ports. Other systems include computer networks in which a server sends a single copy of data to a plurality of clients.
A design consideration for such systems is to keep the size of the chip implementing the device small. Increasing memory capacity on the chip, for example, on a network switch, undesirably increases the size of the chip and reduces the real estate that could otherwise be used for enhanced device features. Storing a single frame of data on a chip requires a relatively substantial amount of memory. When the switch is a multiport switch, connecting together twenty-eight ports, for example, the memory requirement for storing frames on the chip becomes extremely large. Switching the frame of data received at one port of the switch to be transmitted by another port of the switch requires a large amount of buffer space on the chip. This problem becomes much worse, however, when multiple copies of the same frame are to be transmitted. The same frame is replicated for each copy that is to be transmitted, so that even more memory is needed to store each copy.
The duplication and storage of multiple copies of a single frame is wasteful of memory space and leads to increased congestion of memory resources, since a single frame of data may be copied many times and prevent other frames from being stored in the buffers in which the copies of the frame are stored.